/**
 * @version2018.11.20
 */
var zd = new Object();
/**
 * @description	headers: {'Authorization': validate},
 */
var validate = 'Basic ' + localStorage.getItem('validate');

(function(doc) {
	/**
	 * @description 设置沉浸式的导航条
	 * @param {Object} bcolor 可选
	 */
	zd.setHeaderBackground = function(bcolor) {
		//设置状态栏颜色及判断
		var immersed = 0;
		var topoffset = 45; //100特殊的
		var ms = (/Html5Plus\/.+\s\(.*(Immersed\/(\d+\.?\d*).*)\)/gi).exec(navigator.userAgent);
		if(ms && ms.length >= 3) { // 当前环境为沉浸式状态栏模式
			immersed = parseFloat(ms[2]); // 获取状态栏的高度
			topoffset = topoffset + immersed;
			var t = doc.getElementsByTagName('header')[0];
			if(t) {
				t.style.paddingTop = immersed + 'px';
				t.style.height = topoffset + 'px';
				t.style.background = bcolor || 'linear-gradient(#FF5858, #FF0000)';
				//Red 备选色 'linear-gradient(Fuchsia, blue)'
			}
			var mc = doc.getElementsByClassName('mui-content')[0];
			if(mc) {
				var newpt = 44 + immersed + 'px';
				mc.style.paddingTop = newpt;
			}
			//下拉刷新位置
			var mptp = doc.getElementsByClassName('mui-pull-top-pocket')[0];
			if(mptp) {
				mptp.style.top = immersed + 'px';
			}
		}
		plus.navigator.setStatusBarStyle('light');
	}
	/**
	 * @description 压缩图片（需要获取本地文件权限）
	 * @param {Object} src
	 * @param {Object} callback
	 */
	zd.resize = function(src, callback) {
		var filename = src.substring(src.lastIndexOf('/') + 1);
		plus.zip.compressImage({
				src: src,
				dst: '_doc/' + filename,
				overwrite: true,
				width: '450px', //这里指定了宽度，同样可以修改
				format: 'jpg',
				quality: 100 //图片质量不再修改，以免失真
			},
			function(e) {
				callback(e.target);
			},
			function(err) {
				alert('未知错误!', 0, function() {
					mui.back();
				})
			})
	}
	/**
	 * @description ajax获取数据错误，第一个对象为错误文本，第二个对象为等待对象
	 * @param {Object} errorText
	 * @param {Object} 等待对象
	 */
	zd.popError = function(errorText, wt) {
		errorText ? mui.toast(errorText, {
			duration: 'short',
			type: 'div'
		}) : mui.toast('服务器繁忙', {
			duration: 'short',
			type: 'div'
		});
		if(null != wt) {
			wt.close();
		}
	}
})(document);

(function() {
	/**
	 * @description 检查电话是否规范
	 * @param {Object} phone 
	 */
	zd.checkPhone = function(phone) {
		var checkPhone = /^[1][3,4,5,7,8,9][0-9]{9}$/;
		if(!checkPhone.test(phone)) {
			plus.nativeUI.toast('请填写正确手机号或或移动电话');
			return false;
		} else return true;
	}
	/**
	 * @description 查找一个数组内的某个元素的索引值
	 * @param {Array} array
	 * @param {Object} val要查找的元素
	 */
	zd.findArrayIndexOf = function(array, val) {
		for(var i = 0; i < array.length; i++) {
			if(array[i] == val)
				return i;
		}
	}
	/**
	 * @description 删除某个数组内元素的方法
	 * @param {Array} array
	 * @param {Object} val 要删除元素的值
	 */
	zd.removeArrayIndexOf = function(array, val) {
		var index = findArrayIndexOf(array, val);
		if(index > -1) {
			array.splice(index, 1);
		}
	}
})()

/**
 * @param {Object} uploadData 上传数据对象
 * @param {requestCallback} requirementQuery 上传方法
 * 
 * 选择监听控件
 *	<ul class="zd-select-radio">
 * 		<li class="zd-select-cell zd-selective">
 * 			<a class="zd-select-tag"></a>
 * 		</li>
 *	</ul>
 * 
 */
function selectListener(uploadData, requirementQuery) {
	var getValueId = function(obj) {
		keyId = obj.parentNode.id;
		value = obj.getAttribute('valueId');
		var _script = 'uploadData.' + keyId + ' = "' + value + '";'
		eval(_script);
	}
	mui(".zd-select-radio").on('tap', '.zd-select-cell', function() {
		selective = this.parentNode.querySelector('.zd-selective');
		if(selective) { //如果列表中有被选中的
			//则检查当前标签是否被选中
			if(this.className == 'zd-select-cell zd-selective') { //如过当前标签被选中了
				this.className = 'zd-select-cell'; //则当前标签取消
			} else { //如过当前标签未被选中
				selective.className = 'zd-select-cell'; //则之前选中的取消
				this.className = 'zd-select-cell zd-selective'; //当前标签选中
				//赋值区
				getValueId(this);
				requirementQuery(uploadData);
			}
		} else { //若列表中没有被选中的
			this.className = 'zd-select-cell zd-selective'; //则当前标签选中
			//赋值区
			getValueId(this);
			requirementQuery(uploadData);
		};
	});
}
/**
 * @description 透明渐变色导航条
 * 使用mui.openWindow时传入styles参数；
 *	mui.openWindow({
 *		styles: {
 *			titleNView: titleNView
 *		},
 *	});
 */

var titleNView = {
	backgroundColor: '#DE4943', //导航栏背景色
	titleText: '返回', //导航栏标题
	titleColor: '#ffffff', //文字颜色
	type: 'transparent', //透明渐变样式
	autoBackButton: true, //自动绘制返回箭头
};
/**
 * @description 带有自定义图标的
 */
var titleNView1 = {
	backgroundColor: '#8A2BE2', //导航栏背景色
	titleText: '返回', //导航栏标题
	titleColor: '#ffffff', //文字颜色
	type: 'transparent', //透明渐变样式
	autoBackButton: true, //自动绘制返回箭头
	buttons: [ //Array[ WebviewCustomButtonStyles ]类型,标题栏上的自定义按钮.建的自定义按钮数目不限制,实际应用中建议最多设置4个按钮(包括左侧返回按钮).
		{
			color: '#FFFFFF', //String类型,按钮上文字颜色.可取值:"#RRGGBB"格式字符串,"rgba(R,G,B,A)".默认值为窗口标题栏控件的标题文字颜色.
			colorPressed: '#0000FF', //String类型,按下状态按钮文字颜色.String类型,按钮上文字颜色.可取值:"#RRGGBB"格式字符串,"rgba(R,G,B,A)".默认值为color属性值自动调整透明度为0.3.
			float: 'right', //String类型,按钮在标题栏上的显示位置.right:在标题栏中靠右排列显示.left:在标题栏中靠左侧排列显示(在返回键后). 默认:right.
			fontWeight: 'normal', //String类型,按钮上文字的粗细.normal:标准字体.bold:加粗字体.默认:normal.
			fontSize: '21px', //String类型,按钮上文字大小.可取值:字体高度像素值,数字加"px"格式字符串.
			fontSrc: '../../fonts/icon-font.ttf', //String类型,按钮上文字使用的字体文件路径.相对路径:相对于当前页面的host位置,如"a.jpg",注意当前页面为网络地址则不支持.绝对路径:如Android平台"/sdcard/logo.png",此类路径通常通过其它5+ API获取的.扩展相对路径URL(RelativeURL):以"_"开头的相对路径,如"_www/a.jpg".本地路径URL:以"file://"开头,后面跟随系统绝对路径.
			onclick: function() {
				mui.openWindow({
					url: 'shop-cart.html', //要跳转的下一个页面的地址
				});
			}, //WebviewCustomButtonCallback类型,按钮点击后触发的回调函数.回调函数中将返回此JSON对象
			text: '\ue600' //String类型,按钮上显示的文字.推荐使用一个字符,超过一个字符可能无法正常显示,使用字体图标时unicode字符表示必须'\u'开头,如"\ue123"(注意不能写成"\e123").
		}
	],
};
/**
 * @description 在标签上类上加  get-image
 * 使用function getImageURL(imgURL)获得返回的图片路径
 * a为返回的图片路径
 * 2018.5.28
 */
(function() {
	var getImageDOM = document.querySelectorAll('.get-image');
	if(getImageDOM.length == 0) {
		return;
	}
	for(var i = 0; i < getImageDOM.length; i++) {
		getImageDOM[i].addEventListener('tap', function() {
			plus.nativeUI.actionSheet({
					title: "照片选择",
					cancel: "取消",
					buttons: [{
						title: "拍照",
					}, {
						title: "手机相册选择"
					}]
				},
				function(e) {
					if(e.index == 1) {
						plus.camera.getCamera().captureImage(function(p) { //拍照成功
							plus.io.resolveLocalFileSystemURL(p, function(entry) { //获取所拍摄的照片
								var e = entry.toLocalURL(); //获取所拍摄照片的绝对路径
								imageZip(e); //压缩图片
							}, function(e) { //拍照失败
								console.log('读取拍照文件错误：' + e.message);
							});
						}, function(e) {
							console.log('失败：' + e.message);
						});
					} else if(e.index == 2) {
						plus.gallery.pick(function(e) { //照片选择
							imageZip(e); //压缩图片
						}, function(e) { //取消选择文件时触发
						});
					};
				});
		});
		//图片压缩
		function imageZip(e) {
			plus.zip.compressImage({ //压缩图片
				src: e, //原图片地址
				dst: '_doc/' + name,
				width: "300px",
				overwrite: true,
				quality: 1 //图片压缩质量
			}, function(zip) { //压缩成功回调
				if(zip.size > (10 * 1024)) { //上传文件单个大小
					return mui.toast('上传文件超大,请重新选择~'); //如果图片大于10M
				};
				getImageURL(zip.target);
			}, function(zipe) {
				mui.toast('压缩失败！')
			});
		};
	};
})();
/**
 * @description id为{zdImageList}标签使用
 * zd.imageListInit(dataImage，limit),初始化该控件，dataImage[]渲染下载图片，limit限制上传图片数。
 * zd.upImageFiles 上传图片数组 使用完后请重置[]
 * zd.upDeleteImage 上传删除图片数组 使用完后请重置[]
 */
(function() {
	var imageListDOM = document.querySelectorAll('#zdImageList');
	if(imageListDOM.length == 0) return;
	var imgNumber = 0;
	var imageList = document.getElementById('zdImageList'); //取得图片列表节点
	zd.upImageFiles = [];
	zd.upDeleteImage = [];
	/**
	 * @description 初始化控件
	 * @param {Array} dataImage 渲染下载图片
	 * @param {Number} limit 限制上传图片数
	 */
	zd.imageListInit = function(dataImage, limit) { //初始化
		if(limit == null) {
			console.log('初始化必须有两个参数');
			return;
		}
		imgNumber = limit;
		for(var i in dataImage) {//如果dataImage为空则不执行
			var placeholder = document.createElement('div'); //创建图片div
			placeholder.className = 'zd-image-item'; //图片div属性加一个类
			placeholder.style.backgroundImage = 'url(' + dataImage[i] + ')'; // 图片背景图片地址
			var deleteIco = deleteBtn(placeholder); //增加删除按钮
			placeholder.appendChild(deleteIco); //在显示的图片上添加删除按钮
			imageList.appendChild(placeholder); //在页面的图片节点上添加一个图片块
		};
		newPlaceholder(); //新建一个占位符
	};
	//添加占位符
	function newPlaceholder() {
		if(document.querySelectorAll('.zd-image-item').length >= imgNumber) return;
		if(document.querySelectorAll('.space').length > 0) return;
		var placeholder = document.createElement('div'); //新建一个占位符
		placeholder.className = 'zd-image-item space'; //给占位符添加属性，之中添加space类，含有space的则为空闲区
		var addIco = addBtn(placeholder); //带监听的加号
		var deleteIco = deleteBtn(placeholder); //带监听的删除符号
		placeholder.appendChild(addIco); //将加号添加进占位符
		placeholder.appendChild(deleteIco); //将删除添加进占位符
		imageList.appendChild(placeholder); //将占位符添加进图片列表
	}
	//添加按钮
	function addBtn(placeholder) {
		var addBtn = document.createElement("div"); //添加加号div
		addBtn.className = 'zd-image-up'; //加号div添加类
		addBtn.addEventListener('tap', function() {
			var bts = [{
				title: "拍照",
			}, {
				title: "手机相册选择"
			}];
			plus.nativeUI.actionSheet({
					title: "照片选择",
					cancel: "取消",
					buttons: bts
				},
				function(e) {
					if(e.index == 1) {
						plus.camera.getCamera().captureImage(function(p) { //拍照成功
							plus.io.resolveLocalFileSystemURL(p, function(entry) { //获取所拍摄的照片
								var e = entry.toLocalURL(); //获取所拍摄照片的绝对路径
								imageZip(e, placeholder); //压缩图片并渲染
							}, function(e) { //拍照失败
								console.log('读取拍照文件错误：' + e.message);
							});
						}, function(e) {
							console.log('失败：' + e.message);
						});
					} else if(e.index == 2) {
						plus.gallery.pick(function(e) { //照片选择
							imageZip(e, placeholder); //压缩图片并渲染
						}, function(e) { //取消选择文件时触发
							console.log('取消了：' + e.message);
						});
					};
				});
		});
		return addBtn;
	};
	//图片压缩
	function imageZip(e, placeholder) {
		plus.zip.compressImage({ //压缩图片
			src: e, //原图片地址
			dst: '_doc/' + name,
			width: "300px",
			overwrite: true,
			quality: 1 //图片压缩质量
		}, function(zip) { //压缩成功回调
			if(zip.size > (10 * 1024)) { //上传文件单个大小
				return mui.toast('上传文件超大,请重新选择~'); //如果图片大于10M
			};
			if(placeholder.classList.contains('space')) { //判断是否有空间类
				placeholder.classList.remove('space'); //删除空间类
				placeholder.style.backgroundImage = 'url(' + zip.target + ')'; //渲染图片
				zd.upImageFiles.push(zip.target); //上传图片数组添加图片
				newPlaceholder(); //新建一个占位符
			};
		}, function(zipe) {
			mui.toast('压缩失败！')
		});
	};
	//删除按钮
	function deleteBtn(placeholder) {
		var dBtn = document.createElement('div'); //创建删除按钮div
		dBtn.setAttribute('class', 'zd-image-close'); //设置删除按钮属性加一个类
		dBtn.innerHTML = 'x'; //删除按钮图标
		dBtn.addEventListener('tap', function() { //删除按钮添加事件
			var delImg = this.parentNode.style.backgroundImage;
			delImg = delImg.split("(")[1].split(")")[0];
			if(delImg.search("http") != -1) {
				zd.upDeleteImage.push(delImg); //删除数组添加图片
			}
			zd.removeArrayIndexOf(zd.upImageFiles, delImg);
			imageList.removeChild(placeholder); //删除显示的图片
			newPlaceholder(); //新建一个占位符
		});
		return dBtn;
	};
})();

/**
 *  @description 产生一个随机数
 */
function getUid() {
	return Math.floor(Math.random() * 100000000 + 10000000).toString();
}
/**
 * @description 重写返回按键
 */
function rewriteBack() {
	var first = null;
	mui.back = function() {
		//首次按键，提示‘再按一次退出应用’
		if(!first) {
			first = new Date().getTime();
			mui.toast('再按一次退出应用');
			setTimeout(function() {
				first = null;
			}, 1000);
		} else {
			if(new Date().getTime() - first < 1000) {
				plus.runtime.quit();
			}
		}
		return false;
	}
}